package com.charmzenus.it.redis;


import java.util.List;
import java.util.Set;

public interface IRedisService {
    /**
     * 添加
     *
     * @param key    key
     * @param expire 过期时间(单位:秒),传入 -1 时表示不设置过期时间
     */
    void setHashValue(String hashKey, String key, String values, long expire);

    void setHashObj(String hashKey, String key, Object values, long expire);

    /**
     * 查询
     *
     * @param key 查询的key
     * @return
     */
    String getHashValue(String hashKey, String key);

    Object getHashObj(String hashKey, String key);

    /**
     * 删除
     *
     * @param key 传入key的名称
     */
    void deleteHash(String hashKey, String key);


    /**
     * 获取当前redis库下所有对象
     *
     * @return
     */
    List<String> getHashAll(String hashKey);

    /**
     * 查询查询当前redis库下所有key
     *
     * @return
     */
    Set<String> getHashKeys(String hashKey);

    /**
     * 判断key是否存在redis中
     *
     * @param key 传入key的名称
     * @return
     */
    boolean isHashKeyExists(String hashKey, String key);

    /**
     * 查询当前key下缓存数量
     *
     * @return
     */
    long hashCount(String hashKey);

    /**
     * 清空redis
     */
    void hashEmpty(String hashKey);




    // #################################################################################################################
    // ###############################################String存储########################################################
    // #################################################################################################################
    void setValue(String key, Object values, long expire);
    void setValue(String key, Object values);
    void delete(String key);
    Object getValue(String key);

    /**
     * 根据前缀key模糊删除
     *
     * @param prex
     */
    void deleteByPrefix(String prex);

    /**
     * 根据后缀key模糊删除
     *
     * @param suffix
     */
    void deleteBySuffix(String suffix);

    /**
     * 字段加减
     * @param key
     * @param count
     */
    void increment(String key, long count);
    /**
     * 字段加减
     * @param key
     * @param count
     */
    void increment(String key, long count, int delayTime);

}